﻿using System.Diagnostics.CodeAnalysis;

namespace PhoneNetTools.Dns
{
    /// <summary>
    /// The possible types, as defined in RFC 1035.
    /// </summary>
    [SuppressMessage("Microsoft.Design", "CA1028:EnumStorageShouldBeInt32", Justification = "This was not my decision. The API is designed this way.")]
    public enum QType : ushort
    {
        /// <summary>
        /// An unknown type. This value should never be used.
        /// </summary>
        Unknown = 0, 

        /// <summary>
        /// A host address (IPv4).
        /// </summary>
        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "A", Justification = "This was not my decision. The API is designed this way.")]
        A = 1, 

        /// <summary>
        /// An authoritative name server.
        /// </summary>
        NS, 

        /// <summary>
        /// Mail destination, obsolete, use MX.
        /// </summary>
        MD, 

        /// <summary>
        /// Mail forwarder, obsolete, use MX.
        /// </summary>
        MF, 

        /// <summary>
        /// The canonical name for an alias.
        /// </summary>
        CNAME, 

        /// <summary>
        /// Marks the start of a zone of authority.
        /// </summary>
        SOA, 

        /// <summary>
        /// A mailbox domain name (experimental).
        /// </summary>
        MB, 

        /// <summary>
        /// A mail group member (experimental).
        /// </summary>
        MG, 

        /// <summary>
        /// A mail rename domain name (experimental).
        /// </summary>
        MR, 

        /// <summary>
        /// A null resource record (experimental).
        /// </summary>
        NULL, 

        /// <summary>
        /// A well known service description.
        /// </summary>
        WKS, 

        /// <summary>
        /// A domain name pointer.
        /// </summary>
        PTR, 

        /// <summary>
        /// Host information.
        /// </summary>
        HINFO, 

        /// <summary>
        /// Mailbox or mail list information.
        /// </summary>
        MINFO, 

        /// <summary>
        /// Mail exchange.
        /// </summary>
        MX, 

        /// <summary>
        /// Text strings.
        /// </summary>
        TXT, 

        /// <summary>
        /// A request for transfer of an entire zone.
        /// </summary>
        AFXR = 252, 

        /// <summary>
        /// A request for mailbox-related records (MB, MG or MR).
        /// </summary>
        MAILB = 253, 

        /// <summary>
        /// A request for mail agent RRs (Obsolete - see MX).
        /// </summary>
        MAILA = 254, 

        /// <summary>
        /// A request for all records (*).
        /// </summary>
        ALL = 255
    }
}